package sein.android.hopenote;

import com.mocoplex.adlib.AdlibActivity;
import com.mocoplex.adlib.AdlibConfig;
import com.mocoplex.adlib.AdlibManager.AdlibVersionCheckingListener;

import sein.android.hopenote.Const.HopeNoteDb;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TableLayout;
import android.widget.TableRow;

public class Note_Input extends AdlibActivity implements OnClickListener {

	private LinearLayout buttonArea, lineArea;
	private final int BUTTON_ID = 0x8000;
	private Cursor cur_group;
	private DBAdapter HnopenHelper;
	private SQLiteDatabase sdb;
	private final int ArrayCnt = 3;
	private final int MaxButton = 9;
	private TableLayout tb;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.note_input);

		IntentFilter filter = new IntentFilter("Note_Input_btSet");
		registerReceiver(BR_Note_Input, filter);

		// tb = new TableLayout(this);
		tb = (TableLayout) findViewById(R.id.buttonTable);
		tb.setStretchAllColumns(true);
		tb.setShrinkAllColumns(true);
		// LinearLayout lineArea = (LinearLayout)findViewById(R.id.lineArea);
		// lineArea.addView(tb);
		// lineArea.setBackgroundColor(Color.argb(100,255,235,205));

		// Adlib initialization
		initAds();
		// 실제 광고 호출이 될 adview 를 연결합니다.
		this.setAdsContainer(R.id.ads);

		ButtonSet();
	}

	private void initAds() {
		// TODO Auto-generated method stub
		// 광고 스케줄링 설정을 위해 아래 내용을 프로그램 실행시 한번만 실행합니다. (처음 실행되는 activity에서 한번만
		// 호출해주세요.)

		// 광고 subview 의 패키지 경로를 설정합니다. (실제로 작성된 패키지 경로로 수정해주세요.)

		// 제휴 플랫폼을 연결합니다.
		AdlibConfig.getInstance().bindPlatform("INMOBI",
				"sein.android.hopenote.ads.SubAdlibAdViewInmobi");
		// adlibr.com 에서는 제휴 플랫폼에서 발생한 수익의 일부를 reward point로 더 적립해드립니다.
		// 자세한 사항은 http://adlibr.com/rpoint.jsp 를 참조해주세요.

		// 쓰지 않을 광고플랫폼은 삭제해주세요.
		AdlibConfig.getInstance().bindPlatform("ADAM",
				"sein.android.hopenote.ads.SubAdlibAdViewAdam");
		// AdlibConfig.getInstance().bindPlatform("ADCUBE","test.adlib.project.ads.SubAdlibAdViewAdcube");
		// AdlibConfig.getInstance().bindPlatform("ADMOB","test.adlib.project.ads.SubAdlibAdViewAdmob");
		// AdlibConfig.getInstance().bindPlatform("CAULY","test.adlib.project.ads.SubAdlibAdViewCauly");
		// AdlibConfig.getInstance().bindPlatform("TAD","test.adlib.project.ads.SubAdlibAdViewTAD");
		// AdlibConfig.getInstance().bindPlatform("NAVER","test.adlib.project.ads.SubAdlibAdViewNaverAdPost");
		AdlibConfig.getInstance().bindPlatform("SHALLWEAD",
				"sein.android.hopenote.ads.SubAdlibAdViewShallWeAd");
		// 쓰지 않을 플랫폼은 JAR 파일 및 test.adlib.project.ads 경로에서 삭제하면 최종 바이너리 크기를 줄일 수
		// 있습니다.

		// adlibr.com 에서 발급받은 api 키를 입력합니다.
		// http://adlibr.com/admin/myapplist.jsp
		AdlibConfig.getInstance().setAdlibKey("50610733e4b025de5263729d");

		/*
		 * // Locale 별 다른 스케줄을 적용하신다면, Locale locale =
		 * this.getResources().getConfiguration().locale; String lc =
		 * locale.getLanguage();
		 * 
		 * if(lc.equals("ko")) { // 다국어 스케줄을 설정하시려면 애드립에서 별도로 키를 생성하시고 해당 키를
		 * 적용해주세요. AdlibConfig.getInstance().setAdlibKey("대한민국 광고 스케줄링"); } else
		 * { // 다국어 스케줄을 설정하시려면 애드립에서 별도로 키를 생성하시고 해당 키를 적용해주세요.
		 * AdlibConfig.getInstance().setAdlibKey("그밖의 나라"); }
		 */

		// 광고 타겟팅을 위한 사용자 정보를 입력합니다. (option)
		// gender(M/F/0)
		// age(10/20/30/40/0)
		// lat(위도)
		// lon(경도)

		AdlibConfig.getInstance().setAdInfo("0", "0", "31.111", "127.111");

		/*
		 * // 클라이언트 버전관리를 위한 리스너 추가 // 서버에서 클라이언트 버전을 관리하여 사용자에게 업데이트를 안내할 수
		 * 있습니다. (option) this.setVersionCheckingListner(new
		 * AdlibVersionCheckingListener(){
		 * 
		 * public void gotCurrentVersion(String ver) {
		 * 
		 * // 서버에서 설정한 버전정보를 수신했습니다. // 기존 클라이언트 버전을 확인하여 적절한 작업을 수행하세요. double
		 * current = 0.9;
		 * 
		 * double newVersion = Double.parseDouble(ver); if(current >=
		 * newVersion) return;
		 * 
		 * 
		 * new AlertDialog.Builder(Note_Input.this) .setTitle("버전 업데이트")
		 * .setMessage("프로그램을 업데이트 하시겠습니까?") .setPositiveButton("yes", new
		 * DialogInterface.OnClickListener() { public void
		 * onClick(DialogInterface dialog, int whichButton) { // 마켓 또는 안내 페이지로
		 * 이동합니다. } }) .setNegativeButton("no", new
		 * DialogInterface.OnClickListener() { public void
		 * onClick(DialogInterface dialog, int whichButton) { // 업데이트를 하지 않습니다.
		 * } }) .show();
		 * 
		 * }
		 * 
		 * });
		 */
	}

	public void ButtonSet() {
		HnopenHelper = new DBAdapter(this);
		sdb = HnopenHelper.getReadableDatabase();

		Button userinput = (Button) findViewById(R.id.user_input);
		userinput.setOnClickListener(this);

		Button[] dynamicButton = new Button[MaxButton];

		cur_group = sdb.query(true, HopeNoteDb.TB_ITEM,
				new String[] { HopeNoteDb.COL_GROUP }, null, null, null, null,
				null, null);

		cur_group.moveToFirst();

		TableLayout.LayoutParams linearParam;
		TableRow.LayoutParams buttonParam;

		// int buttonwidth = userinput.getWidth()/3;
		// Log.i("버트길이", Integer.toString( userinput.getWidth()));
		// Log.i("로우", Integer.toString(buttonwidth));
		linearParam = new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
				LayoutParams.WRAP_CONTENT);
		linearParam.weight = 1;
		buttonParam = new TableRow.LayoutParams(LayoutParams.FILL_PARENT,
				LayoutParams.FILL_PARENT);
		buttonParam.setMargins(2, 2, 2, 20);
		buttonParam.weight = 1;

		int i, k = 0;

		// TableLayout tb = (TableLayout)findViewById(R.id.buttonTable);
		tb.removeAllViewsInLayout();
		TableRow tr = null;

		for (i = 0; i < MaxButton; i++) {

			dynamicButton[i] = new Button(this);
			// dynamicButton[i].setId(BUTTON_ID+i);
			if (!cur_group.isAfterLast()) {
				dynamicButton[i].setText(cur_group.getString(0));
				dynamicButton[i].setTag(cur_group.getString(0));
			} else {
				dynamicButton[i].setText("+");
				dynamicButton[i].setTag("item_add");
			}

			// dynamicButton[i].setBackgroundColor(Color.argb(0, 0, 0, 0));
			dynamicButton[i].setTextSize(30);
			dynamicButton[i].setGravity(Gravity.CENTER);
			dynamicButton[i].setBackgroundDrawable(getResources().getDrawable(
					R.drawable.btn_round_effect));
			dynamicButton[i].setEms(3);
			dynamicButton[i].setLayoutParams(new ViewGroup.LayoutParams(
					LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
			// dynamicButton[i].setHeight(500);
			dynamicButton[i].setOnClickListener(this);
			// Log.i("test",cur_group.getString(0));

			if (i % ArrayCnt == 0) {
				tr = new TableRow(this);
				// tr.setWeightSum(1);
				// tr.setLayoutParams(new TableRow.LayoutParams(
				// android.widget.TableRow.LayoutParams.WRAP_CONTENT,
				// android.widget.TableRow.LayoutParams.FILL_PARENT));
			}
			tr.addView(dynamicButton[i], buttonParam);

			if (i % ArrayCnt == (ArrayCnt - 1) && i > 0) {
				tb.addView(tr, linearParam);
			}
			if (!cur_group.isAfterLast()) {
				cur_group.moveToNext();
			}

		}

		/*
		 * for (i = 0; i < cur_group.getCount(); i++) {
		 * 
		 * dynamicButton[i] = new Button(this); //
		 * dynamicButton[i].setId(BUTTON_ID+i);
		 * dynamicButton[i].setText(cur_group.getString(0));
		 * dynamicButton[i].setTag(cur_group.getString(0));
		 * 
		 * dynamicButton[i].setOnClickListener(this); //
		 * Log.i("test",cur_group.getString(0));
		 * 
		 * if (i % ArrayCnt == 0) { tr = new TableRow(this);
		 * tr.setLayoutParams(new TableRow.LayoutParams(
		 * android.widget.TableRow.LayoutParams.WRAP_CONTENT,
		 * android.widget.TableRow.LayoutParams.WRAP_CONTENT)); }
		 * tr.addView(dynamicButton[i], buttonParam);
		 * 
		 * if((i % ArrayCnt == (ArrayCnt-1) && i > 0) || cur_group.isLast()) {
		 * tb.addView(tr, linearParam); } cur_group.moveToNext();
		 * 
		 * }
		 * 
		 * if ( cur_group.getCount() > 0 ){ TableRow tr = new TableRow(this);
		 * tr.setLayoutParams(new
		 * TableRow.LayoutParams(android.widget.TableRow.LayoutParams
		 * .WRAP_CONTENT,android.widget.TableRow.LayoutParams.WRAP_CONTENT));
		 * 
		 * //Log.i("카운트 i", Integer.toString(i));
		 * //dynamicLine[k].setLayoutParams(linearParam); if ( i % ArrayCnt ==
		 * 0){ tr.addView(dynamicButton[i-3],buttonParam);
		 * tr.addView(dynamicButton[i-2],buttonParam);
		 * tr.addView(dynamicButton[i-1],buttonParam); } else if ( i % ArrayCnt
		 * == 2){ tr.addView(dynamicButton[i-2],buttonParam);
		 * tr.addView(dynamicButton[i-1],buttonParam); } else if ( i % ArrayCnt
		 * == 1){ tr.addView(dynamicButton[i-1],buttonParam); }
		 * 
		 * tb.addView(tr,linearParam); }
		 */
		cur_group.close();
	}

	public void onClick(View v) {
		// TODO Auto-generated method stub

		if (v.getTag().toString().equals("userinput")) {
			// 사용자등록 페이지로 이동
			Intent intent = new Intent(Note_Input.this, User_Add.class);

			v = Note_Input_Tab.InputTabGroup
					.getLocalActivityManager()
					.startActivity(
							"User_Add",
							intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
									| Intent.FLAG_ACTIVITY_SINGLE_TOP))
					.getDecorView();
			// v.setBackgroundDrawable(getResources().getDrawable(R.drawable.base_bg));
			Note_Input_Tab.InputTabGroup.replaceView(v, "user_add");
		} else if (v.getTag().toString().equals("item_add")) {
			HopeNoteDb.IS_NEW_GROUP = true;
			Intent item_input = new Intent(Note_Input.this, Item_Input.class);
			startActivity(item_input);
		} else {
			// 노트 등록페이지로 이동 그룹명을 등록페이지로 전달
			Intent intent = new Intent(Note_Input.this, Note_Add.class);
			HopeNoteDb.CURRENT_GROUP = v.getTag().toString();
			/*
			 * //HopeNoteDb.set_NOTE_GROUP(v.getTag().toString());
			 * //intent.putExtra
			 * (HopeNoteDb.EXTRA_NOTE_ADD_GROUP,v.getTag().toString()); v =
			 * Note_Input_Tab
			 * .InputTabGroup.getLocalActivityManager().startActivity
			 * ("Note_Add", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
			 * Intent.FLAG_ACTIVITY_SINGLE_TOP)).getDecorView();
			 * //v.setBackgroundDrawable
			 * (getResources().getDrawable(R.drawable.base_bg));
			 * Note_Input_Tab.InputTabGroup.replaceView(v,"note_add");
			 */
			startActivity(intent);
		}

	}

	@Override
	public void onAttachedToWindow() {
		// TODO Auto-generated method stub
		super.onAttachedToWindow();
		ButtonSet();
	}

	private BroadcastReceiver BR_Note_Input = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			ButtonSet();
			Log.i("BR", "input");
		}
	};

	public void onBackPressed() {
		finish();
	};
	
	@Override
	protected void onDestroy() {
		super.onDestroy();
		unregisterReceiver(BR_Note_Input);
	};
}
